Skip to content

fix(nav): relier les 2 orphelins drift main (ICT-MUH, Lean-12c) — check full-repo 3 NEW -> 1 NEW - #18276

Merged
myia-ai-01 merged 1 commit into
mainfrom
fix/navchain-main-drift
Sep 29, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
fix/navchain-main-drift

Conversation

@jsboige

@jsboige jsboige commented Sep 28, 2026

Copy link
Copy Markdown
Owner

Grain: LIGHT/docs -- lane myia-po-2026:CoursIA -- prev: LIGHT/docs #18270

Sujet

Réparer 2 des 3 findings NEW vs baseline qui rendent le check full-repo check_notebook_nav_chain.py --check ROUGE sur main (mesuré sur origin/main 1bae7ac, suite directe de #18270/#18268) :

  • [orphan_entry] IIT/ICT-Series/ICT-MUH-FibreTegmark.ipynb — zéro lien entrant repo-wide
  • [orphan_entry] SymbolicAI/Lean/Lean-12c-Tensor-Product-Representations-Lean.ipynb — zéro lien entrant repo-wide

Le 3e finding ([unreachable] SL-13-Discover-TPR) est volontairement laissé : la PR #18218 (en review) ajoute déjà le lien entrant SL-12b → SL-13 dans son patch (vérifié firsthand) — le corriger ici doublerait le geste et crée le risque de collision.

Changements (2 notebooks, lignes Navigation ajoutées)

Notebook Édit Sémantique
ICT-16-MDLTwoPartCode (cell0) ligne Navigation insérée : témoin transverse → ICT-MUH topologie mutualisée déclarée par ICT-MUH lui-même (« Voisin MDL : ICT-16 » dans son en-tête)
Lean-12b-Lean-Sensitivity-Theorem (fin de cell0) ligne Navigation ajoutée : Suivant → Lean-12c prédécesseur que Lean-12c déclare lui-même dans son en-tête (« Précédent : Lean-12b »)

Pourquoi in-notebook et pas README : le README Lean est réécrit par la tranche rename #18199 (hunk @@ -73,23 adjacent aux lignes du tableau où 12c s'insérerait), et les READMEs de série sont touchés par la PR catalogue #18202 — le fix in-notebook évite les deux collisions tout en créant des arêtes que le guard compte (cellules de navigation).

Preuves (commit 40d45be)

# full-repo : 3 NEW -> 1 NEW (le résiduel = SL-13, guéri par #18218)
python scripts/notebook_tools/check_notebook_nav_chain.py --check
FAIL: 1 NEW finding(s) vs baseline: [unreachable] SL-13-Discover-TPR.ipynb

# gate CI simulée à l'identique (notebook-nav-chain-guard.yml) :
python ... --check --diff-files pr_files.txt
WARN: 1 NEW hors diff (non imputables, ne blocquent pas) : SL-13
OK: 0 NEW finding vs baseline (446 connus, 1433 notebooks).  exit=0

# garde 404 : check_notebook_navlinks.py sur les 2 notebooks édités
OK: 0 lien cassé (x2)

Édits markdown-only (round-trip JSON lossless vérifié) : outputs, execution_count et IDs intacts (exception C.2 markdown-only).

See #18268 (le grain fondateur de la classe), See #18218 (guérit le résiduel).

🤖 Generated with Claude Code

Suite directe de #18268 (PR #18270) : le check full-repo
check_notebook_nav_chain.py --check etait ROUGE sur main avec 3
findings NEW vs baseline. Deux des trois sont repares ici, le
troisieme (SL-13 unreachable) est deja gueri par la PR #18218 en
review (lien entrant SL-12b -> SL-13 dans son patch) -- le laisser
a sa PR evite la collision.

- ICT-16-MDLTwoPartCode : ligne Navigation ajoutee (cell0) pointant
  le temoin transverse ICT-MUH, topologie mutualisee declaree par
  ICT-MUH lui-meme ("Voisin MDL : ICT-16" dans son en-tete)
- Lean-12b-Lean-Sensitivity-Theorem : ligne Navigation ajoutee en
  fin de cell0 avec Suivant -> Lean-12c, predecesseur que Lean-12c
  declare lui-meme dans son en-tete

READMEs ecartes volontairement : le README Lean est reecrit par la
tranche rename #18199 (hunks adjacents au tableau) et les READMEs
serie sont touches par la PR catalogue #18202 -- le fix in-notebook
evite les deux collisions.

check_notebook_nav_chain.py --check : 3 NEW -> 1 NEW (SL-13 seul,
hors diff, non imputable). Gate simulee --diff-files : exit 0.
check_notebook_navlinks.py : 0 lien casse sur les 2 notebooks.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml).

Detector: python scripts/audit/detect_organ_duplication.py --base <merge-base> --body-file <pr body>
Rationale: #16776 / #13564 (rule merged in #16778).

@github-actions github-actions Bot added the trivial-diff-advisory Diff trivial : grain META mecanique sans fournee ni exception ecrite (#15740) label Sep 28, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Trivial-diff advisory (#15740, non bloquant).
genre docs dans la famille META (docs/guard/ledger/readme/test) + diff de 5 lignes changees (<= 100) + aucune exception ecrite dans le body : le litmus de la trivialite (une douzaine d'instances scannees a la suite) est credible. Le verdict est ADVISORY -- fournir une fournée ou citer une exception de la forme #15719 l'eteint.
La demande : une fournee (le geste pourrait comprendre ~10x plus d'instances), OU une exception ecrite dans le body de la forme « exception seulement residu final mesure » (#15719). Editer le body re-deroule cet organe et retire le label.

@github-actions

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 2
  • Code cells validated: 20
  • Result: All passed

Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns)
Non-Python kernels (.NET/Lean): C.1 + errors only (execution_count advisory)
QuantConnect notebooks: C.1 + errors only (require QC Cloud for execution)

@github-actions

Copy link
Copy Markdown
Contributor

Golden-Set Execution (H.7 P3)

✅ 8/8 notebooks passed (certified reproducible)

Notebook Status Time
2.1-Workflow-ML.ipynb ✅ SUCCESS 7.9s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 6.4s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 7.8s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 6.9s
Search-01-StateSpace.ipynb ✅ SUCCESS 5.7s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 3.1s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 24.8s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 3.4s

Pinned lockfile: scripts/notebook_tools/golden_set.lock.txt (H.7 P3, axe A #4208)

@github-actions

Copy link
Copy Markdown
Contributor

Notebook outputs-required (H.4 schema): PASS (every code cell carries an outputs: list)

@jsboige

jsboige commented Sep 28, 2026

Copy link
Copy Markdown
Owner Author

Les 5 rouges de cette tete ne viennent pas de ce diff — arbre de slot incomplet

Les cinq jambes non-PR gate rouges au run de 16:55–17:04Z ont ete relancees (attempt 2). Ce qui suit est la mesure, pas une supposition.

Jambe Ce que le job a dit
Notebook Navlink Check error: aucun notebook trouve sous MyIA.AI.Notebooks/ (rc=2)
Secret Scan ERROR: file or directory not found: scripts/secrets/tests/test_check_assert_secret_egress.py (rc=4)
Markdown claims (#11435) ERROR: file or directory not found: scripts/tests/test_check_markdown_claims_output.py (rc=4)
Cell Source Parses ModuleNotFoundError: No module named 'scripts.tests'
Kernel Drift Guard AssertionError: l'env ICT est epingle dans IIT/ICT-Series/pyproject.toml

Contre-mesure, tete identique, arbre complet (worktree isole sur 40d45beb, non modifie) :

python -m pytest scripts/notebook_tools/tests/test_check_kernel_drift_env_hint.py \
                 scripts/notebook_tools/tests/test_check_kernel_drift.py -q
-> 40 passed in 0.21s

python scripts/notebook_tools/check_notebook_navlinks.py --check
-> OK: 0 NEW broken navlink vs baseline (0 connus, 1433 notebook(s) scanne(s)).   rc=0

Et les fichiers que les jobs declarent absents existent sur origin/main : scripts/tests/__init__.py, scripts/secrets/tests/test_check_assert_secret_egress.py, scripts/tests/test_check_markdown_claims_output.py, MyIA.AI.Notebooks/IIT/ICT-Series/pyproject.toml.

Le Kernel Drift Guard merite d'etre note : sa garde ne dit pas « fichier absent » mais rend un AssertionError de contenu (« l'env ICT est epingle dans ... pyproject.toml »), parce que la garde cherche le pyproject.toml dans un arbre qui ne le porte pas. C'est la meme classe deguisee en verdict de contenu — exactement le motif qui fait accuser a tort le diff d'une PR.

Perimetre de cette PR : git diff --stat = 2 fichiers, IIT/ICT-Series/ICT-16-MDLTwoPartCode.ipynb et SymbolicAI/Lean/Lean-12b-...ipynb. Aucun des cinq rouges ne lit un fichier touche par ce diff.

Classe rattachee : workspace de slot non nettoye / checkout incomplet (#14801), porte par le regime de _work chaud de pool.sh (#18225) — la meme classe que les trois rouges fondateurs de #14801. Signal, pas conclusion : si la relance repasse au vert sur un slot frais, c'est la preuve que le slot etait le facteur.

🤖 Generated with Claude Code

@github-actions

Copy link
Copy Markdown
Contributor

⚠️ Prose/output review needed in the notebooks this PR changed: a numeric value is not anchored, an explicit relation is contradicted, or its evidence is missing. These cases remain distinct in the JSON report; the signal is advisory, NOT a merge gate.

Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit claim-check relations resolve only against named CLAIM_METRICS from the local output window and are classified SUPPORTED, CONTRADICTED, or UNPROVEN.
The markdown-claims-output-report run artifact contains the structured JSON report. See python scripts/check_markdown_claims_output.py --help for re-running locally.
Detector rationale: c.290 / c.331 / PR #11435 numeric pathology, extended with low-noise relational evidence.

jsboige added a commit that referenced this pull request Sep 28, 2026
…erie

Le check-nav-chain rougissait a la tete du 27/09 : le carnet neuf
ICT-46-Strate7-FreeCoordinates n'avait aucun lien entrant, donc aucun lecteur
ne pouvait l'atteindre en suivant la navigation de la serie (regle de l'organe :
un carnet sans lien entrant dans une serie qui en a plus d'un est un
orphan_entry).

Deux aretes en markdown seul, sans re-execution (exception C.2 markdown-only) :
- ICT-45, barre **Navigation** : Suivant -> ICT-46 ;
- ICT-46, barre **Navigation** inseree sous le titre : Index + Precedent -> ICT-45.

Mesure locale (check_notebook_nav_chain.py --check) : le finding
[orphan_entry] .../ICT-46-Strate7-FreeCoordinates.ipynb disparait. Le second
finding que la CI impute au diff, [orphan_entry] ICT-MUH-FibreTegmark, est
pre-existant sur main et sa reparation est en vol dans la PR #18276 (lane
myia-po-2026:CoursIA) -- hors perimetre de cette lane, cf commentaire de PR.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #18276 (fix(nav): relier les 2 orphelins drift main (ICT-MUH, Lean-12c) — check full-repo 3 NEW -> 1 NEW) touche au moins un chemin de fichier aussi modifie par d'autres PRs ouvertes. Risque de double-livraison (meme fichier livre deux fois, 2x le travail et 2x les runs CI). Advisory : parfois legitime (tranches coordonnees, partition paths: explicite, PRs empilees exclues) -- l'organe rend visible, il ne bloque pas.

@jsboige

jsboige commented Sep 29, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 18276
head: 40d45be
complete: true
body: read
comments-reviewed: 8
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 23573cbf4e6eaf67dc889d7f720021ffff3fb43a4b2635b1c3ad075f881429f6
diff-files: 2
diff-additions: 4
diff-deletions: 1
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
[/ADJOINT PREFLIGHT]

Secrétaire vérificateur (myia-po-2026:CoursIA-3), 29/09 00:55Z — Dossier tiers READY à tête exacte 40d45beb…. Vague oldest-first.

  • Tête exacte : 40d45beb — vérifiée via check-runs.
  • Checks : 0 rouge latest-wins.
  • B.0 : check_unaddressed_nits.py rc=0.
  • Scope : fix(nav): relier les 2 orphelins drift main (ICT-MUH, Lean-1). +4/-1, nav orphelins.
  • Risque résiduel : sous seuil §A.
  • Geste attendu ai-01 : merge direct via Q67.

@myia-ai-01
myia-ai-01 merged commit d80b492 into main Sep 29, 2026
96 of 103 checks passed
jsboige added a commit that referenced this pull request Sep 29, 2026
…2c sur cette branche etait un artefact de base perimee)
jsboige added a commit that referenced this pull request Sep 29, 2026
…/* et rafraichir le baseline nav

- docs/curriculum/ia-symbolique.md : Lean-18/19/20/20b -> ANALYSE-01..04
  (oublies du rename, 4 liens casses par check-links)
- merge origin/main : ramene le lien 12b->12c de #18276 -- l orphan_entry
  Lean-12c sur la branche etait un artefact de base perimee, pas du rename
- baseline_nb_nav_chain regenere (436 connus ; 9 findings resolus par le
  merge, recommande par le check)

Verifie localement : check_docs_links 0 lien casse ; nav_chain --check
0 NEW finding ; fast_lane --shadow aucun bloquant en echec.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
myia-ai-01 pushed a commit that referenced this pull request Sep 29, 2026
…econd ordre en banc exécutable (#18059)

* feat(ict,#18052): module ict/free_coordinates — banc executable strate 7 (G_t, coups ontologiques, 6 proxys, predicteur espace fixe)

See #18052 · See #7745

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* feat(ict,#18052): ICT-46 — premiere livraison strate 7, freebits de second ordre en organe executable

Notebook 29 cellules (9 code, papermill 0 erreur) : banc G_t, pont Aaronson
ordre 1 vs ordre 2, six proxys executes, deux lectures graduées, gap Mathlib,
3 exercices stubbes C.1.

See #18052 · See #16781 · See #7745

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* docs(ict,#18052): README serie — strate 7 livree par ICT-46 (titre de section, carte, table)

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* fix(iit,#18052): P(R) lissage Laplace symetrique en bits + marginalisation par equivalence

Reponse au CONCERN NanoClaw (review 5331122613, PR #18059) :

- performative_power: np.log -> np.log2 (les 13.033/8.363 affiches
  etaient des nats), lissage de Laplace SYMETRIQUE sur l'union des
  supports des deux bras (plus de plancher 1e-12 qui dominait la KL :
  toute action nouvelle pesait mass*ln(mass/1e-12)), nouveau parametre
  equivalence={action: classe} qui fusionne les histogrammes par classe
  avant la KL.
- Semantique honnete du contraste decoratif, en deux lectures : brut,
  une copie de paiement identique reste une option DISTINGUEE (P(R)
  1.819 bits) ; marginalisee (vendre2 = vendre), elle tombe a 0.029
  bit — la copie ne change pas la dynamique de fond. Personne morale :
  2.753 bits dans les deux lectures. Mesures multi-seeds (0/7/42/99/
  2026) dans le docstring du test.
- Test renforce : asserte desormais le claim qu'il nomme (p_fort > 2.0,
  p_deco < p_fort, p_deco_eq < 0.15, p_fort > 10*p_deco_eq) au lieu du
  seul p_deco < p_fort.
- Notebook : section 5 reecrite (3 nombres, 3 lectures, lien explicite
  au quotient d'extensions du C_t §4) ; mineur §2 : 0.938 bit mesure
  contre H(0.7)=0.881 (lissage de Laplace), remplace le approx 1 bit.
- Re-execution papermill complete (C.2) : 29 cellules, 0 erreur,
  exec counts 1-9.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* fix(iit,#18052): table des strates -- ligne strate 7 alignee sur l'etat livre du reste du README

La ligne de la table disait encore « cadrée par la dimension D1, non livrée » alors que
l'en-tête (l.16), la carte (l.18), le bloc d'état (l.263), le paragraphe de section (l.265),
l'encart D2 (l.290) et le socle Thom (l.309) passent la strate 7 à livrée par ICT-46.
Colonne État corrigée ; colonne « Pattes de la tresse » inchangée (elle décrit l'axe
transverse, qui reste « D2 alimente sans occuper »). Markdown seul.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* fix(notebooks,#18052): ICT-46 relie a la chaine de navigation de la serie

Le check-nav-chain rougissait a la tete du 27/09 : le carnet neuf
ICT-46-Strate7-FreeCoordinates n'avait aucun lien entrant, donc aucun lecteur
ne pouvait l'atteindre en suivant la navigation de la serie (regle de l'organe :
un carnet sans lien entrant dans une serie qui en a plus d'un est un
orphan_entry).

Deux aretes en markdown seul, sans re-execution (exception C.2 markdown-only) :
- ICT-45, barre **Navigation** : Suivant -> ICT-46 ;
- ICT-46, barre **Navigation** inseree sous le titre : Index + Precedent -> ICT-45.

Mesure locale (check_notebook_nav_chain.py --check) : le finding
[orphan_entry] .../ICT-46-Strate7-FreeCoordinates.ipynb disparait. Le second
finding que la CI impute au diff, [orphan_entry] ICT-MUH-FibreTegmark, est
pre-existant sur main et sa reparation est en vol dans la PR #18276 (lane
myia-po-2026:CoursIA) -- hors perimetre de cette lane, cf commentaire de PR.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* fix(notebooks,#18052): ICT-MUH relie a ses deux voisins declares

ICT-MUH-FibreTegmark.ipynb declarait dans son propre en-tete « Voisin MDL :
ICT-16 | Charniere compression : ICT-17b », mais aucun des deux ne le citait
en retour : le carnet etait un `orphan_entry` pour
check_notebook_nav_chain.py — rien ne menait a lui depuis la chaine de
navigation de la serie.

Le lien reciproque est ajoute dans les deux voisins, en tete de leur cellule 0,
sous la forme deja pratiquee par la serie (ligne `**Navigation** : Index |
voisin | axe transverse`), qui est celle des paires 44<->45.

Mesure : `check_notebook_nav_chain.py --check --diff-files` passe de
`FAIL: 1 NEW finding` a `OK: 0 NEW finding`. Les deux findings restants du
rapport (Lean-12c, SL-13) sont hors du diff et deja presents sur main.

Precision de provenance : ICT-MUH etait deja orphelin sur main avant cette PR
(mesure sur un arbre propre a 52f7b32 : memes trois findings). Le lien est
donc un correctif reel, pas la reparation d'une regression introduite ici.

Edition markdown seule (exception C.2) : aucune re-execution n'est due.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
myia-ai-01 pushed a commit that referenced this pull request Sep 29, 2026
…rents (pilote CL1) (#18015)

* rename(#16231): git mv purs (4 notebooks)

Table : C:/Users/jsboi/AppData/Local/Temp/analyse.tsv, pilotee par rename_notebooks.py.

* rename(#16231): referents reecrits par surface (17 fichiers)

Cellules de code citees : jamais reecrites (re-execution C.2 due).
Sorties commitees : jamais touchees.
Catalogue : restaure byte-identique a main (regle catalogue, cron le regenere).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* rename(#16231): profondeurs relatives + READMEs de la descente ANALYSE

19 liens repris (cellules markdown uniquement, gardes I2/I3) : liens sortants
du dossier ../../ -> ../../../ (Search, IIT), prefixe ../ vers les carnets
restes a la racine (Lean-21 x2), prefixe ANALYSE/ depuis la racine (x9).
README serie : liens table -> ANALYSE/, marqueur sous-serie ligne 18, arbre
plat -> entree dossier (modele Serre100). Nouveau ANALYSE/README.md (FR).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* fix(lean,#18015): retirer le compteur de lignes de la prose Lean-28

Le garde prose-counts --strict refuse la ligne parce qu'elle entre dans le diff
(#9377) ; le compteur est de la prose preexistante, non liee au renommage. La
mesure est retiree, le predicat conserve : « un monolithe single-file » au lieu
de « un monolithe single-file de 248 818 lignes ».

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* fix(curriculum,#18015): relier les 4 liens ia-symbolique vers ANALYSE/* et rafraichir le baseline nav

- docs/curriculum/ia-symbolique.md : Lean-18/19/20/20b -> ANALYSE-01..04
  (oublies du rename, 4 liens casses par check-links)
- merge origin/main : ramene le lien 12b->12c de #18276 -- l orphan_entry
  Lean-12c sur la branche etait un artefact de base perimee, pas du rename
- baseline_nb_nav_chain regenere (436 connus ; 9 findings resolus par le
  merge, recommande par le check)

Verifie localement : check_docs_links 0 lien casse ; nav_chain --check
0 NEW finding ; fast_lane --shadow aucun bloquant en echec.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

trivial-diff-advisory Diff trivial : grain META mecanique sans fournee ni exception ecrite (#15740)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants